Test and Set(TAS)
Compare and Swap(CAS)
と同様の、アトミック処理の一つ。
入力されたポインタの値の示す値がtrueならtrueをリターンし、falseなら値をtrueに設定してfalseをリターンする。
C言語には、TAS用の組み込み関数__sync_lock_test_and_setを利用して以下のように書ける
code:c
#include
<stdbool.h>
bool test_and_set(volatile bool *p) {
return __sync_lock_test_and_set(p, 1);
}